The present invention relates to the simulation of vibrations in a string. Such simulation can be used to generate musical sounds by computational devices such as a computer system.
It is well known that the oscillations of a vibrating string can be modelled and the results can be converted into sound. Thus, the vibration of each of the strings of a stringed instrument can be modelled by a sound synthesiser.
There are several possible approaches to modelling a vibrating string, for example for use in sound synthesis. One such approach is to describe the modelled string by means of a differential equation, which can then be solved numerically by means of a standard iterative method using a computer. Thus, the wave equation of the modelled vibrating string is solved by iterative successive approximation, as discussed in “Synthesizing Musical Sounds by Solving the Wave Equation for Vibrating Objects”: L Hiller and P Ruiz; Journal Audio Engineering Society, 1971, Vol. 19, pp 462-470 (Part I) and 542-551 (Part II). This iterative successive approximation uses finite differences in time and space to solve the equation. Accordingly, this method is known as the finite difference method.
The continuous wave differential equation for a stiff string with one degree of freedom is:
                              M          ⁢                                                    ∂                2                            ⁢              y                                      ∂                              t                2                                                    =                              T            ⁢                                                            ∂                  2                                ⁢                y                                            ∂                                  x                  2                                                              -                      S            ⁢                                                            ∂                  4                                ⁢                y                                            ∂                                  x                  4                                                              +                                    L              T                        ⁢                                                            ∂                  3                                ⁢                y                                                              ∂                                      x                    2                                                  ⁢                                  ∂                  t                                                              -                                    L              S                        ⁢                                                            ∂                  5                                ⁢                y                                                              ∂                                      x                    4                                                  ⁢                                  ∂                  t                                                              -                                    L              v                        ⁢                                          ∂                y                                            ∂                t                                              +                      F            ⁡                          (                              x                ,                t                            )                                                          (                  Equation          ⁢                                          ⁢          1                )            where
F(x, t) denotes an external force at coordinate x on the string at time t;
M denotes mass per length;
S denotes stiffness of the string;
T denotes tension of the string;
Ls denotes a loss associated with the stiffness of the string;
Lt denotes a loss associated with the tension of the string; and
Lv denotes a loss associated with the turbulent flow of the air surrounding the string.
Several conditions are assumed for this wave equation. The first is that the string is rigidly supported at each end and vibrates in one plane only. Thus, every point on the string can only move in a straight line perpendicular to a line joining the end supports. This means that the string does not stretch and vibrate longitudinally. In addition, the amplitude of oscillations of the string is small compared with the string's length. However, the string need not have a uniform density along its length.
Such a string can be modelled as shown in FIG. 1. In FIG. 1, the string 100 comprises a plurality of discrete elements j, from j=0 at the extreme left-hand end to j=x−1 at the extreme right-hand end. The string is rigidly supported at discrete element j=0 at the left-hand end and at discrete element j=x−1 at the right-hand end by supports 110. At rest, all the discrete elements j are aligned in the x-direction. During vibration, the discrete elements j can move only in the y-direction, which is orthogonal to the x-direction. Thus, the plane of vibration is the plane of the paper on which FIG. 1 is drawn. The z-direction is orthogonal to the plane of vibration. The distance between each discrete element is dx.
As shown in “Untersuchungen zur Synthese natürlich erscheinender Klänge”: M Sapp; Shaker Verlag, ISBN 3-8265-9318-9, using this model and assuming that dx=1 and dt=1, the solution of the continuous wave equation (Equation 1) can be approximated using the following discrete recursion formula:
                              y          ⁡                      [                                          n                +                1                            ,              j                        ]                          =                                            (                                                                    y                    ⁡                                          [                                              n                        ,                                                  j                          -                          2                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  1                                +                                                      y                    ⁡                                          [                                              n                        ,                                                  j                          -                          1                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  2                                +                                                      y                    ⁡                                          [                                              n                        ,                        j                                            ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  3                                +                                                      y                    ⁡                                          [                                              n                        ,                                                  j                          +                          1                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  2                                +                                                      y                    ⁡                                          [                                              n                        ,                                                  j                          +                          2                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  1                                +                                                      y                    ⁡                                          [                                                                        n                          -                          1                                                ,                                                  j                          -                          2                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  4                                +                                                      y                    ⁡                                          [                                                                        n                          -                          1                                                ,                                                  j                          -                          1                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  5                                +                                                      y                    ⁡                                          [                                                                        n                          -                          1                                                ,                        j                                            ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  6                                +                                                      y                    ⁡                                          [                                                                        n                          -                          1                                                ,                                                  j                          +                          1                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  5                                +                                                      y                    ⁡                                          [                                                                        n                          -                          1                                                ,                                                  j                          +                          2                                                                    ]                                                        ⁢                  c                  ⁢                                                                          ⁢                  4                                            )                        /                          M              ⁡                              [                j                ]                                              +                      2            ⁢                          y              ⁡                              [                                  n                  ,                  j                                ]                                              +                                    F              ⁡                              [                                  n                  ,                  j                                ]                                      /                          M              ⁡                              [                j                ]                                                                        (                  Equation          ⁢                                          ⁢          2                )            in which:
y[n, j] denotes the excursion of discrete element j in the y-direction at time n;
y[n+1, j] denotes the excursion of discrete element j in the y-direction at time n+1;
y[n, j+1] denotes the excursion of discrete element j+1 in the y-direction at time n;
M[j] denotes the mass of discrete element j;
F[n, j] denotes an additional external force acting on a discrete element j at time n; and
c1 to c6 are coefficients, which depend on the material parameters of the string and the surrounding media.
More specifically, coefficients c1 to c6 can be calculated as follows:c1=−(S+Ls);c2=T+4S+Lt+4Ls; c3=−(2T+6S+Lv+2Lt+6Ls);c4=Ls;c5=−(Lt+4Ls); andc6=Lv+2Lt+6Ls 
Since the excursion of elements j=1 to j=x−2 needs to be calculated using the recursion formula and the recursion formula requires elements j−2 and j+2 for calculating the next excursion of element j, additional dummy elements at j=−1 and at j=x are needed. These dummy elements can be visualised as lying at the ends of the strings outside the supports 110. At the rest position at time n=0, these dummy elements are assigned a position in alignment with the other elements. Thus, y[0, −1]=0 and y[0, x]=0. After each calculation of new excursions for all elements, these dummy elements are set to the negated relative excursion of their respective counterpart elements j=1 and j=x−2 on the other side of the supports 110.
Starting from an initial excursion for each of the discrete elements j=0 . . . x−1 at time steps n=0 and n=−1, the excursion y for each discrete element j=1 . . . x−2 (in other words all the discrete elements between the supports) at time n=1 can be calculated using the recursion formula. Accordingly, for each further time step n=2, 3 . . . the new excursions for all elements can be calculated based on the excursions of the previous two time steps and the values of any external forces F[n, j] that have been applied for these time steps. Since the string will initially be at rest, the initial excursion for each of the discrete elements at time steps n=0 and n=−1 will be y[−1, j]=0 and y[0, j]=0 for all j.
Several methods for exciting such a simulated string and hence applying a force to the discrete elements are known. These include exciting the string in a percussive way, for example using a modelled piano hammer or a modelled plectrum to hit, pluck or otherwise strike the simulated string. These modelled strikers may be discretised mass-spring models, possibly with non-linear spring characteristics, that interact with the simulated string to mathematically define F[n, j] for use in the discrete recursion formula (Equation 2). However, if the modelled string is only struck once, then the force F[n, j] acting on the discrete elements j of the simulated string occurs only over a short period of time. Due to the loss coefficients c1 to c6, the string will gradually return to its initial rest state. Thus, the vibrations of the simulated string due to modelled strikers such as piano hammers and plectrums are not self-sustained. The term “self-sustained” is a specific term for an oscillation that is driven by a continuous energy source. In particular, self-sustained oscillations arise when a continuous energy source drives a resonator—such as a string under tension—by means of a non-linear energy coupling.
The only common way to achieve self-sustained vibration of the string is to use a modelled bow, which mimics the action of a bow on a violin or cello. As an example, in one very simplified bow model, the portion of the string being bowed is assumed to be a single point in contact with the bow. As the bow moves in one direction, this single point is deemed to assume a first state, in which it moves with and at the same speed as the bow, and then to assume a second state in which it slips against the bow without friction. Thus, the bow moves in the plane of vibration of the simulated string. This cycle between the first and second states is continuously repeated so long as the bow is moving. The time at which the point transitions from the first mode to the second mode is determined as a function of the bowing pressure. The point transitions from the second mode to the first mode when the natural vibration of the string causes it to move again in the same direction as the bow. More advanced bow models do not assume the portion of the string being bowed to be a single point in contact with the bow and use non-linear friction characteristics instead of the simple slip-stick mechanism described above.
Self-sustained oscillations in a resonator are also found in wind instruments such as the flute, in which an air jet from the player's lips interacts with the possible standing waves already set up inside the flute. However, the models that are commonly used for simulating wind instruments in sound synthesisers are based on travelling wave models. Travelling wave models are also known as feedback delay loops or waveguide models. In travelling wave models, each interaction point of the travelling wave is modelled as a scattering junction. Thus, compared to string models based on finite differences, travelling wave models are not so well suited for simultaneous interactions with multiple objects such as modelled piano hammers, plectrums and bows.